The performance of virtual machines operating workloads may be negatively affected when I/O requests of the workloads are sent to a storage device. I/O request latency may occur due to the transmission of the I/O requests over the network. Moreover, utilization of the storage device may result in unnecessarily high operating costs.
More specifically, when the server system detects a virtual machine (VM) read request, the server system services the read request, if possible, from the flash cache rather than from the storage array. Since the I/O latency for flash storage access is typically several orders of magnitude less than the I/O latency for hard disk access, this caching mechanism can significantly improve VM I/O performance.
Additionally, each VM or virtual disk (VMDK) that a system administrator designates as being part of a server system's server flash cache configuration is associated with a dedicated portion of flash cache space referred to as the VM/VMDK's “cache allocation.” The size of this cache allocation represents the maximum amount of data the flash storage device can cache for the VM or VMDK. Once the cache allocation reaches this cap, the server system must begin deleting cache entries from the cache allocation in order to make room for additional data. An important aspect of managing server flash cache involves determining the optimal cache allocation size for each VM or VMDK. A VM/VMDK cache allocation size that is too small will decrease the utility of the flash cache for the VM/VMDK because the server system will delete a significant percentage of the VM/VMDK's cache entries before the VM can re-access them. On the other hand, a cache allocation size that is too large will unnecessarily consume space on the flash storage device, which is space that the server system can better utilize via allocation to one or more other VMs/VMDKs.